python scipy 二维插值

您所在的位置:网站首页 numpy 二维插值 python scipy 二维插值

python scipy 二维插值

2023-08-04 00:34| 来源: 网络整理| 查看: 265

在我的应用程序中,数据是在扭曲的网格上采样的,我想将其重新采样到非扭曲网格上。为了测试这一点,我编写了一个带有示例性失真和一个简单函数作为数据的程序:from __future__ import division

import numpy as np

import scipy.interpolate as intp

import pylab as plt

# Defining some variables:

quadratic = -3/128

linear = 1/16

pn = np.poly1d([quadratic, linear,0])

pixels_x = 50

pixels_y = 30

frame = np.zeros((pixels_x,pixels_y))

x_width= np.concatenate((np.linspace(8,7.8,57) , np.linspace(7.8,8,pixels_y-57)))

def data(x,y):

z = y*(np.exp(-(x-5)**2/3) + np.exp(-(x)**2/5) + np.exp(-(x+5)**2))

return(z)

# Generating grid coordinates

yt = np.arange(380,380+pixels_y*4,4)

xt = np.linspace(-7.8,7.8,pixels_x)

X, Y = np.meshgrid(xt,yt)

Y=Y.T

X=X.T

Y_m = np.zeros((pixels_x,pixels_y))

X_m = np.zeros((pixels_x,pixels_y))

# generating distorted grid coordinates:

for i in range(pixels_y):

Y_m[:,i] = Y[:,i] - pn(xt)

X_m[:,i] = np.linspace(-x_width[i],x_width[i],pixels_x)

# Sample data:

for i in range(pixels_y):

for j in range(pixels_x):

frame[j,i] = data(X_m[j,i],Y_m[j,i])

Y_m = Y_m.flatten()

X_m = X_m.flatten()

frame = frame.flatten()

##

Y = Y.flatten()

X = X.flatten()

ipf = intp.interp2d(X_m,Y_m,frame)

interpolated_frame = ipf(xt,yt)

在这一点上,我不得不问:代码有效,但我收到以下警告:

警告:不能再添加节点,因为B样条系数的数目

已经超过数据点m的数目。可能的原因是:

s或m太小。(fp;秒)

kx,ky=1,1 nx,ny=54,31 m=1500 fp=0.000006 s=0.000000

另外,一些插值工件出现了,我假设它们与警告相关-你们知道我做错了什么吗?对于我的实际应用,框架需要大约500*100,但是当这样做的时候,我会得到一个记忆错误-除了把框架分成几个部分之外,我能做些什么来帮助它吗?

谢谢!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3